In most cases, a relatively large concern for customer facing Internet based applications (e.g., banking, retail, services) is the quality of service and/or end user experience for their customers. This service generally translates into server requests, e.g., associated with web-based applications, which are the entry points for customer-based transactions, and generally impact a company's ability to generate revenue. Currently, there are a number of methods that may monitor the performance of such web-based applications. However, most conventional monitoring products have a fixed set of instrumentation that is applied to measuring the round trip (and associated dependencies) for an individual server request. For example, a monitoring product may measure the incremental flow through the actual application method calls that service that request. The classes containing the method calls are generally instrumented in such a way that the instrumentation (which is inserted for interception) is called when the method is entered and called when the method is exited. The instrumentation in most cases is based on a descriptive file (e.g., instrumentation file, recording file, etc.) that essentially identifies the particular classes and methods to be monitored, as well as how they should be handled and what information should be collected.
However, in the event that the customer wishes to change the instrumentation and/or has a new set of customized methods that the customer wishes to monitor, implementing dynamic/custom changes in a timely manner without affecting the application is a difficult challenge. For example, in order to deploy a customized change to the underlying instrumentation, the application may have to be shut down for a lengthy period of time, which may be cost prohibitive and/or disadvantageous when assisting customers who desire to minimize downtime (e.g., some restarts can be excess of 45 minutes to complete). Further, making changes to the underlying instrumentation is a complex process that requires a relatively significant amount of time to implement, and often involving a highly skilled person with an in-depth understanding of the instrumentation product and/or the underlying server application.